What is @types/hoist-non-react-statics?
The @types/hoist-non-react-statics package provides TypeScript type definitions for the hoist-non-react-statics package. This is useful for TypeScript projects that use hoist-non-react-statics to copy non-react specific statics from a child component to a parent component. It helps in maintaining type safety and IntelliSense in IDEs for projects that hoist statics in React components.
What are @types/hoist-non-react-statics's main functionalities?
Type Definitions for Hoisting Statics
This code demonstrates how to use @types/hoist-non-react-statics for adding TypeScript type definitions when hoisting non-react statics from a base component to a wrapped component. It ensures that the static methods and properties are correctly typed and recognized by TypeScript.
import hoistNonReactStatics from 'hoist-non-react-statics';
import React from 'react';
class BaseComponent extends React.Component {}
class WrappedComponent extends React.Component {}
hoistNonReactStatics(WrappedComponent, BaseComponent);
Other packages similar to @types/hoist-non-react-statics
hoist-non-react-statics
This is the JavaScript library that @types/hoist-non-react-statics provides types for. It copies non-react specific statics from a child component to a parent component. While it performs the actual functionality, @types/hoist-non-react-statics only provides type definitions and does not implement any functionality.
Installation
npm install --save @types/hoist-non-react-statics
Summary
This package contains type definitions for hoist-non-react-statics (https://github.com/mridgway/hoist-non-react-statics#readme).
Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/hoist-non-react-statics.
import * as React from "react";
interface REACT_STATICS {
childContextTypes: true;
contextType: true;
contextTypes: true;
defaultProps: true;
displayName: true;
getDefaultProps: true;
getDerivedStateFromError: true;
getDerivedStateFromProps: true;
mixins: true;
propTypes: true;
type: true;
}
interface KNOWN_STATICS {
name: true;
length: true;
prototype: true;
caller: true;
callee: true;
arguments: true;
arity: true;
}
interface MEMO_STATICS {
"$$typeof": true;
compare: true;
defaultProps: true;
displayName: true;
propTypes: true;
type: true;
}
interface FORWARD_REF_STATICS {
"$$typeof": true;
render: true;
defaultProps: true;
displayName: true;
propTypes: true;
}
declare namespace hoistNonReactStatics {
type NonReactStatics<
Source,
C extends {
[key: string]: true;
} = {},
> = {
[
key in Exclude<
keyof Source,
Source extends React.MemoExoticComponent<any> ? keyof MEMO_STATICS | keyof C
: Source extends React.ForwardRefExoticComponent<any> ? keyof FORWARD_REF_STATICS | keyof C
: keyof REACT_STATICS | keyof KNOWN_STATICS | keyof C
>
]: Source[key];
};
}
declare function hoistNonReactStatics<
Target,
Source,
CustomStatic extends {
[key: string]: true;
} = {},
>(
TargetComponent: Target,
SourceComponent: Source,
customStatic?: CustomStatic,
): Target & hoistNonReactStatics.NonReactStatics<Source, CustomStatic>;
export = hoistNonReactStatics;
Additional Details
Credits
These definitions were written by JounQin, and James Reggio.